package com.le.tester.leetcode;

import java.util.ArrayList;
import java.util.List;

/**
 * createTime：2024/4/15 9:40
 * description：z字型变换
 */
public class ChangeToZ {

    public String convert(String s, int numRows) {

//        //第一个不变
//        String firstWord = s.substring(0, 1);
//        Map<Integer, String> map = new HashMap<>();
//        StringBuilder sb = new StringBuilder();
//        int length = s.length();
//        for (int i = 0; i < length; i++) {
//            if ((i + 1) % (numRows - 1) == 0) {
//                String substring = s.substring(i + 1 - (numRows - 1), i + 1);
//                map.put((i + 1) / (numRows - 1), substring);
//                sb.append(substring);
//            }
//        }
//        System.out.println(map);
//        System.out.println(sb);
//        return null;
        if (numRows < 2) {
            return s;
        }

        List<StringBuilder> rows = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            rows.add(new StringBuilder());
        }
        int i = 0;
        int flag = -1;

        for (char c : s.toCharArray()) {
            rows.get(i).append(c);
            if (i == 0 || i == numRows - 1) {
                flag = -flag;
            }
            i = i + flag;
        }

        StringBuilder res = new StringBuilder();

        for (StringBuilder sb : rows) {
            res.append(sb);
        }
        return res.toString();

    }

    public static void main(String[] args) {
        ChangeToZ changeToZ = new ChangeToZ();
        System.out.println(changeToZ.convert("PAYPALISHIRING", 4));
    }
}
